package com.ihelp.rest.mis.platform.service;

import java.util.List;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.ihelp.rest.base.po.SysCode;
import com.ihelp.rest.mis.platform.dao.ModuleDao;
import com.ihelp.rest.mis.pojo.Module;
import com.ihelp.rest.utils.JsonCommon;

/**
 * 模块Service
 * 
 * 类名称：ModuleService 类描述： 创建时间：2013-3-13 上午11:14:24 备注：
 * 
 * @version
 */
@Service
public class ModuleService {

	@Autowired
	private ModuleDao dao;

	/**
	 * 首页模块加载
	 * 注：已启用的模块
	 * @return
	 */
	public List<Module> findModules(){
		return this.dao.queryModules();
	}
	
	/**
	 * 获取模块TreeData 
	 * @return
	 */
	public String findModulesTreeData(){
		List<Module> modules = this.dao.listAll();
		JSONArray array = new JSONArray();
		for(Module module : modules){
			if(module.getPuuid() != null && module.getPuuid().equals("1")){
				JSONObject obj = new JSONObject();
				obj.put("id", module.getUuid());
				obj.put("text", module.getName());
				obj.put("state", "open");
				JSONObject attributes = new JSONObject();
				attributes.put("puuid", module.getPuuid());
				obj.put("attributes", attributes);
				JSONArray subArray = new JSONArray();
				for(Module m : modules){
					if(m.getPuuid() != null && module.getUuid().equals(m.getPuuid())){
						JSONObject subObj = new JSONObject();
						subObj.put("id", m.getUuid());
						subObj.put("text", m.getName());
						subArray.add(subObj);
					}
				}
				if(subArray.size() > 0){
					obj.put("children", subArray);
				}
				array.add(obj);
			}
		}
		return array.toString();
	}

	/**
	 * 模块管理，JSON分页加载
	 * @return
	 */
	public String findPageAllModules(int start, int pageSize) {
		//String json = JsonCommon.getGridJson(this.dao.page(null, start, pageSize)).toString();
		return JsonCommon.getGridJson(this.dao.countAll(),
				this.dao.listAll(start, pageSize)).toString();
	}
	
	/**
	 * 获取父模块JSON数据
	 * @param start
	 * @param pageSize
	 * @return
	 */
	public String findParentModules() {
		return JSONArray.fromObject(this.dao.queryParentModules()).toString();
	}
	
	/**
	 * 获取模块
	 * @param uuid
	 * @return
	 */
	public Module getModule(String uuid){
		if(StringUtils.isBlank(uuid)){
			return null;
		}
		return this.dao.get(uuid);
	}

	/**
	 * 添加模块
	 * @param module
	 * @return
	 */
	public String addModule(Module module) {
		if (StringUtils.isBlank(module.getUuid())) {
			// 第一次保存, AJAX提交form UUID未空串
			module.setUuid(null);
			if(StringUtils.isBlank(module.getPuuid())){
				module.setPuuid(null);
				//module.setPuuid("1");
			}
		}
		this.dao.saveOrUpdate(module);
		return SysCode.SUCCESS;
	}

	/**
	 * 删除模块
	 * @param module
	 */
	public String delModule(Module module) {
		this.dao.deleteObject(module);
		return SysCode.SUCCESS;
	}

}
